/*
 * tmry.h
 *
 *  Created on: Apr 12, 2012
 *      Author: Rafal Sokolowski
 *      Comment: Obsluga timerow oraz przerwan z nim zwiazanych
 */

#ifndef TMRY_H_
#define TMRY_H_

#define TIMER_LIST_SIZE 64		// wielkosc listy zadan (ile moze byc funkcyjek)
#define TIMER_FN_NR 6 			// ilosc funkcji (0 - ID 1 - Pointer 2 - Status(Active)

#define TIMER_ID_COL			0		// id kolumny gdzie jest przechowywane id uslugi LUB UWAGA - tutaj bedzie limit czasowy (jak dlugo ma trwac, ilosc iteracji)
#define TIMER_PTR_COL			1		// id kolumny gdzie jest przechowywany wskaznik uslugi
#define TIMER_ACT_COL			2		// id kolumny gdzie jest przechowywane info, czy usluga jest aktywna (zlicza)
#define TIMER_INC_COL			3		// --,,-- inkrementowana wartosc, ktora jest ref. do czasu dla okresowosci uslugi
#define TIMER_TIMEOUT_COL 		4		// --,,-- wartosc odniesienia dla inkrementowanej (limit iteracji)
#define TIMER_FN_PEDNING_COL	5		// iteracja przebila limit i tutaj jest odchaczane ze funkcja powinna byc wywolana
#define SERVICE_ACTIVE 			1
#define SERVICE_INACTIVE 		0



unsigned int g_au32Services[TIMER_FN_NR][TIMER_LIST_SIZE];
unsigned short g_u16TimerServicesPointer;

int timerRegister( int (*)( void ) ); 			// DODAWANIE FUNKCJI DO SCHEDULERA jezeli zwraca -1 tzn. error wszelki zwrot wiekszy od 0 oznacza success
int timerStart( int, int );
int timerStop( int );
int timerProcessServices( void );				// funckja wywolywana tylko jak gdzies licznik przeskoczy w jego tablicy
int timerInit( int );							// INIT parametrow timera
__attribute__((__interrupt__)) void interruptTimer( void );
#endif /* TMRY_H_ */
